Lịch sử Porting

Số lượng CPUhệ điều hành khác nhau đáng kể được sử dụng trên máy tính để bàn hiện nay nhỏ hơn nhiều so với trước đây. Sự thống trị của kiến ​​trúc x86 có nghĩa là hầu hết các phần mềm máy tính để bàn không bao giờ được chuyển đến một CPU khác. Trong cùng một thị trường, sự lựa chọn của các hệ điều hành đã được giảm xuống một cách hiệu quả thành ba: Microsoft Windows, macOSLinux. Tuy nhiên, trong các hệ thống nhúng và thị trường di động, tính di động vẫn là một vấn đề quan trọng, với ARM là một sự thay thế được sử dụng rộng rãi.

Các tiêu chuẩn quốc tế, như được ban hành bởi ISO, tạo điều kiện thuận lợi cho việc chuyển đổi bằng cách chỉ định các chi tiết của môi trường tính toán theo cách giúp giảm sự khác biệt giữa các nền tảng tuân thủ tiêu chuẩn khác nhau. Viết phần mềm nằm trong giới hạn được chỉ định bởi các tiêu chuẩn này đại diện cho một nỗ lực thực tế mặc dù không tầm thường. Việc port một chương trình như vậy giữa hai nền tảng tuân thủ tiêu chuẩn (giống như POSIX.1) có thể chỉ là vấn đề tải mã nguồn và biên dịch lại nó trên nền tảng mới. Tuy nhiên, thực tế thường thấy rằng các sửa đổi nhỏ khác nhau là bắt buộc, do sự khác biệt nền tảng tinh tế. Hầu hết các tiêu chuẩn bị "vùng xám" nơi khác biệt trong việc giải thích các tiêu chuẩn dẫn đến các biến thể nhỏ từ nền tảng đến nền tảng.

Ngoài ra, còn có một số công cụ hỗ trợ chuyển đổi, chẳng hạn như GNU Compiler Collection, cung cấp các ngôn ngữ lập trình nhất quán trên các nền tảng khác nhau, và Autotools, tự động phát hiện các biến thể nhỏ trong môi trường và điều chỉnh phần mềm tương ứng trước khi biên dịch.

Các trình biên dịch cho một số ngôn ngữ lập trình bậc cao (e.g. Eiffel, Esterel) có được tính di động bằng cách xuất mã nguồn ở một ngôn ngữ trung gian bậc cao khác (giống như C) mà trình biên dịch cho nhiều nền tảng thường có sẵn.

Hai hoạt động liên quan đến (nhưng khác biệt) porting là mô phỏng và biên dịch chéo.

Tài liệu tham khảo

WikiPedia: Porting http://www.oed.com/view/Entry/148098 http://www.ozarksoftscape.com/the-game-collection.... http://www.cgwmuseum.org/galleries/index.php?year=... http://www.cgwmuseum.org/galleries/index.php?year=... https://archive.org/stream/1985-05-anticmagazine/A... https://archive.org/stream/Atari_Software_1984#pag... https://archive.org/stream/info-magazine-13/Info_I... https://www.gnu.org/software/sather/docs-1.2/tutor... https://ieeexplore.ieee.org/document/6312825